#coding:utf-8
''


'''
    0x01、常见字符串与表达式
===========================================================
'''


# 1.单引号赋值，打印不显示单引号，所以显示为空！
s = ''
print s

# 2.双引号赋值，打印不显示双引号，所以显示为空！
s = ""
print s

# 3.字符串含单双引号(只要在单/双引号都会归为字符来处理)
s = "i'm goodman"
print s

# 4.转义字符，以下为转义字符表
# \'    单引号
# \"    双引号
# \t    制表符（四个空格）
# \n    换行符
# \\    倒斜杠
# (1) \' 单引号使用
s = "I\'m is Bob!"
print s
# (2) \" 双引号使用
s = '\"are you kiding me?\"'
print s
# (3) \t 制表符使用
s = "age:\t23"
print s
# (4) \t 换行符使用
s = "s\nt"
print s
# (5) \t 换行符使用
s = "C:\internet\\test\\not"
print s

# 5.三重字符串块
# (1)直接打印效果
s =  '''Dear Alice,

Eve's cat has been arrested

Sincerely,
Bob'''
print s
# (2)转义字符打印
print 'Dear Alice,\n\nEves cat has been arrested\n\nSincerely,\nBob'

# 6.字符串编码utf8
# (1)使用转义字符时，使用u,\t,\n就不可以转义了!
print r"C:\internet\test\not"
# (2)使用转义字符时，不使用u,\t,\n就转义了!
print "C:\internet\test\not"

# 7.合并字符串
s1 = 'hello '
s2 = 'world!'
s3 = s1 + s2    #打印 hello world
print s3

# 7.重复字符串
s = 'hello'
s1 = s * 3
print s1    #打印 hellohellohello

# 8.字符串的索引
# (1)当为正数时，从零开始算起
s = 'hello'
print s[0]  #打印 h
print s[1]  #打印 e
print s[2]  #打印 l
# (2)当为负数时，-1是从最后一位算起，从右到左
print s[-1] #打印 e
print s[-2] #打印 l

# 9.字符串的分片[x:y]
# (1)当括号两边为正数时，左边按照正常算，右边算少一位
s = 'hello'
print s[0:2]    #打印he
print s[2:5]    #打印llo
# (2)当括号冒号左边不填，就从最开始算起
s = 'hello'
print s[:2] #打印he
print s[:4]  #打印hello
# (3)当括号冒号右边不填，右边就算到末尾字符
s = 'hello'
print s[2:] #打印llo
print s[4:] #打印o
# (4)当括号左右两边不填，显示全部字符
print s[:]  #打印hello

# 10.字符串长度len()
a = len('hello world!')
print a #打印12

# 11.格式化字符串%s
s = 'Bob'
print "Hello %s"% s #打印Hello Bob

# 12.字符串方法
# (1)format()：按顺序替换带花括号的值
s = 'world'
print 'hello {0}'.format(s)
# (2)find()：检测字符串中是否包含子字符串，返回所在下标位置
s = 'hello world'
print s.find('wor', 0, 12)
# (3)rstrip()：删除字符串右边的空格
s = 'hello world      '
print s.rstrip()
# (4)lstrip()：删除字符串左边的空格
s = '      hello world'
print s.lstrip()
#  (5)strip()：删除字符串左右两边的空格
s = '      hello world      '
print s.strip()
# (6)replace()：替换字符串
s = 'hello world'
print s.replace('he', 'He') #First参数要替换的字符，second参数是替换后的字符
# (7)split()：切割字符串为列表字符串
s = 'hello world'
print s.split() #默认情况下，按照空格、制表符、换行切割
s = 'helloabcworldabc!'
print s.split('abc') #按照abc来切割字符；
# (8)join()：合并列表内的字符串为字符串
s = ['hello', 'world', '!']
print ' '.join(s) #join前面是以标识符作为合并的符号
# (9)enconde()：encoding参数指定编码格式，errors参数指定不同的错误处理方案
s = 'hello world'
print s.encode('utf-8', 'strict')  #打印uft-8国式编码
print s.encode('base64')           #打印base64形式编码，第二个参数errors默认为strict


'''
    0x02、字符串常量
===========================================================
'''


# 1.单双引号
# (1)双引号包含单引号
s = "'hello world!'"
print s
# (2)单引号包含双引号
s = '"hello world!"'
print s
# (3)转义字符列表
# \a 系统响铃声音(在3.5会显示成方块)
print '\a'  #提示声音
# \b 退格符(键盘的backspace)
print 'hello\bworld!'   #打印hello world!
# \f 换页符()
print 'hello\fworld!'   #打印helloworld!但在终端的效果不同
# \n 换行
print 'hello\nworld!'   #打印hello
                            # world!
# \r 回车符
print 'hello\rworld!'   #打印hello
                            # world！
# \t 制表符 tab键
print 'hello\tworld!'   #打印hello   world!
# \v 垂直制表符
print 'hello\vworld!'  #打印hello
                                  #world！

# 2.r'字符串'(字符串前面加上r可以不让转义字符生效)
print  r'Dear Alice,\n\nEves cat has been arrested\n\nSincerely,\nBob'

# 3.三重字符串
# (1)单引号三重字符串
s =  '''Dear Alice,

Eve's cat has been arrested

Sincerely,
Bob'''
print s
# (2)双引号三重字符串
s =  '''Dear Alice,

Eve's cat has been arrested

Sincerely,
Bob'''
print s